package dnufractal;

public class tcntblk extends tgenblk{
  public tgenblk lt, rt, lb, rb;
  public void msht(int amsht){
    lt.msht(amsht);
    rt.msht(amsht);
    lb.msht(amsht);
    rb.msht(amsht);
  }
  tgenblk lmap(int aresx, int aresy, int aressz, double adelta){
    tgenblk res=new tmapblk();
    res.cmpr=cmpr;
    if(res.map(aresx, aresy, aressz, adelta))return res;
    res=new tcntblk();
    res.cmpr=cmpr;
    res.map(aresx, aresy, aressz, adelta);
    return res;
  }
  public boolean map(int aresx, int aresy, int aressz, double adelta){
    int newsz=aressz / 2;
    lt=lmap(aresx,       aresy,       newsz, adelta/4);
    rt=lmap(aresx+newsz, aresy,       newsz, adelta/4);
    lb=lmap(aresx,       aresy+newsz, newsz, adelta/4);
    rb=lmap(aresx+newsz, aresy+newsz, newsz, adelta/4);
    return true;
  }
  public void ucmp(int aresx, int aresy, int aressz){
    int newsz=aressz / 2;
    System.out.println("newsz = "+newsz);
    lt.ucmp(aresx,       aresy,       newsz);
    rt.ucmp(aresx+newsz, aresy,       newsz);
    lb.ucmp(aresx,       aresy+newsz, newsz);
    rb.ucmp(aresx+newsz, aresy+newsz, newsz);
  }
  public void save(){
    cmpr.wbit(true);
    lt.save();
    rt.save();
    lb.save();
    rb.save();
  }
  private tgenblk lload(){
    tgenblk res;
    if(cmpr.rbit())res=new tcntblk();
    else res=new tmapblk();
    res.cmpr=cmpr;
    res.load();
    return res;
  }
  public void load(){
    lt=lload();
    rt=lload();
    lb=lload();
    rb=lload();
  }
}
